Method and Apparatus for Selecting Among Multiple Tuners

ABSTRACT

A system or method selects among multiple tuners to tune a particular channel. A request is received to tune a first channel. In response to this request, a first tuner is assigned to tune the first channel. A request is received to tune a second channel. If the program tuned by the first tuner is not being recorded, the first tuner is assigned to tune the second channel. If the program tuned by the first tuner is being recorded, the second tuner is assigned to tune the second channel.

RELATED APPLICATIONS

This application is a Continuation of, and claims priority to,co-pending application Ser. No. 11/171,875, filed Jun. 30, 2005,entitled “Method and Apparatus for Selecting Among Multiple Tuners”,incorporated herein by reference.

TECHNICAL FIELD

This invention relates to selecting among multiple tuners to tune aparticular channel.

BACKGROUND OF THE INVENTION

Existing televisions, set top boxes, and other devices that tunebroadcast signals contain a single tuner which is capable of tuning oneof several different channels contained in a broadcast signal. Sincethese existing device contain a single tuner, they are not capable oftuning two or more different channels simultaneously (without the helpof an external tuning device). Thus, when a user submits a request tochange channels, the single tuner is instructed to change to therequested channel. Since there is only one tuner, there is no questionas to which tuner will tune the requested channel.

However, with the development of televisions, set top boxes, and otherclient devices that contain multiple tuners, issues arise regardingwhich tuner should be used to tune a particular channel when a requestto change channels is received. For example, once a particular tunerbegins tuning and recording a program, that tuner cannot be used to tuneany other channel without stopping the recording process. If a requestto change channels is received while a particular channel is beingrecorded, the system must determine whether the user desires to stop therecording and view the new channel or to continue recording the previouschannel while viewing the new channel. Repeatedly prompting the user toselect a tuner to tune a particular channel is likely to be frustratingand distracting to the user.

Therefore it is desirable to provide a system that selects amongmultiple tuners to tune a particular channel in a manner that is leastintrusive to the user of the system.

SUMMARY OF THE INVENTION

The systems and methods described herein select among multiple tuners totune a requested channel. These systems and methods require little or noinput from the user as to which tuner should be assigned to tune aparticular channel. For example, if a new channel is selected by theuser and a tuner is available to tune the new channel, the availabletuner is automatically assigned to tune the new channel withoutrequiring any user input or otherwise disrupting the channel selectionprocess.

In a particular embodiment, a request is received to tune a firstchannel. A first tuner is assigned to tune the first channel. Anotherrequest is received to tune a second channel. The first tuner isassigned to tune the second channel if the program tuned by the firsttuner is not being recorded. The second tuner is assigned to tune thesecond channel if the program tuned by the first tuner is beingrecorded.

Another embodiment receives a request to record a program on a firstchannel. A first tuner is assigned to tune the first channel. Anotherrequest is received to tune a second channel. A determination is maderegarding whether the second channel is already being tuned. Anotherdetermination is made regarding whether a second tuner is available fortuning The first tuner is assigned to tune the second channel if thesecond channel is not already being tuned and the second tuner is notavailable for tuning. The second tuner is assigned to tune the secondchannel if the second channel is not already being tuned and the secondtuner is available for tuning.

According to one aspect of the invention, the system switches to thetuner assigned to the second channel if the second channel is alreadybeing tuned.

BRIEF DESCRIPTION OF THE DRAWINGS

The same reference numerals are used throughout the drawings toreference like components and features.

FIG. 1 illustrates an exemplary environment in which the methods andsystems described herein may be implemented.

FIG. 2 is a block diagram of an example client device, a television, andvarious input devices that interact with the client device.

FIG. 3 is a block diagram of selected components of the client deviceshown in FIGS. 1 and 2.

FIG. 4 is a block diagram of an exemplary client device that includestwo tuners, a tuner controller, a disk drive, and a pair of decoders.

FIG. 5 is a flow diagram illustrating an embodiment of a procedure fordetermining which tuner to use when a user selects a new channel toview.

FIG. 6 is a flow diagram illustrating an embodiment of a procedure fordetermining which tuner to use when one tuner is recording a program anda change channel command is received.

DETAILED DESCRIPTION

FIG. 1 illustrates an exemplary environment 100 in which the methods andsystems described herein may be implemented. One or more contentproviders 102 include stored content 118 and a content server 120.Content server 120 controls the movement of content (including storedcontent 118) from the content provider 102 to a content distributionsystem 104, which is coupled to the content provider. Additionally, thecontent server 120 controls the movement of live content (e.g., contentthat was not previously stored by the content provider) and contentstored at other locations to the content distribution system.

The content distribution system 104 contains a broadcast transmitter 122and one or more content processors 124. Broadcast transmitter 122broadcasts signals (e.g., cable television signals) across a broadcastnetwork 116, such as a cable television network. Broadcast network 116may include wired or wireless media using any broadcast format orbroadcast protocol. Content processor 124 processes the content receivedfrom content provider 102 prior to transmitting the content across thebroadcast network 116. A particular content processor may encode orotherwise process the received content into a format that is understoodby multiple client devices 106 coupled to the broadcast network 116.Although FIG. 1 shows a single content provider 102 and a single contentdistribution system 104, a particular environment may include any numberof content providers coupled to any number of content distributionsystems.

A client device 106(1) receives broadcast content from a satellite-basedtransmitter via a satellite dish 110. Client device 106(1) is alsoreferred to as a set-top box, game console or a satellite receivingdevice. Client device 106(1) is coupled to a television 108(1) forpresenting the content received by the client device (i.e., audio dataand video data) as well as a graphical user interface. A particularclient device 106 may be coupled to any number of televisions 108.Similarly, any number of client devices 106 may be coupled to atelevision 108. Another client device 106(2) is coupled to receivebroadcast content from broadcast network 116 and provide the receivedcontent to a television 108(2). Another client device 106(N) is acombination of a television 112 and a set-top box 114. In this example,the various components and functionality of the set-top box areincorporated into the television, rather than using two separatedevices. The set-top box incorporated into the television may receivebroadcast signals via a satellite dish (similar to satellite dish 110)and/or via broadcast network 116. In alternate embodiments, clientdevices 106 may receive broadcast signals via the Internet or any otherbroadcast medium.

FIG. 2 is a block diagram of an example client device 106, television108, and various input devices that interact with the client device. Asdiscussed above, client device 106 may also be referred to as a set-topbox, a game console or a satellite receiver. Client device 106 includesa wireless receiving port 202 (e.g., an infrared (IR) wireless port) forreceiving wireless communications from a remote control device 204, ahandheld device 206 (such as a personal digital assistant (PDA) orhandheld computer), or other wireless device, such as a wirelesskeyboard. Additionally, a wired keyboard 208 is coupled to client device106 for communicating with the client device. In alternate embodiments,remote control device 204, handheld device 206, and/or keyboard 208 mayus an RF communication link (or other mode of transmission) tocommunicate with client device 106.

Client device 106 receives one or more broadcast signals 220 from one ormore broadcast sources (e.g., from a broadcast network or viasatellite). Client device 106 includes hardware and/or software forreceiving and decoding broadcast signal 220, such as an NTSC, PAL, SECAMor other TV system video signal, and providing video data to thetelevision 108. Client device 106 also includes hardware and/or softwarefor providing the user with a graphical user interface by which the usercan, for example, access various network services, configure the clientdevice 106, and perform other functions.

Client device 106 receives AC power on line 110. Client device 106 iscapable of communicating with other devices via a conventional telephonelink 212, an ISDN link 214, a cable link 216, and an Ethernet link 218.A particular client device 106 may use any one or more of the variouscommunication links 212-218 at a particular instant. Client device 106also generates a video signal and an audio signal, both of which arecommunicated to television 108. The video signals and audio signals canbe communicated form client device 106 to television 108 via an RF(radio frequency) link, S-video link, composite video link, componentvideo link, or other communication link. Although not shown in FIG. 2, aparticular client device 106 may include one or more lights or otherindicators identifying the current status of the client device.Additionally, a particular client device 106 may include one or morecontrol buttons or switches (not shown) for controlling operation of theclient device.

FIG. 3 is a block diagram of selected components of the client device106 shown in FIGS. 1 and 2. Client device 106 includes multiple tuners300 and 302, one or more processors 304, a random access memory (RAM)306, and a non-volatile memory 308 that contains, for example, anoperating system 310 and one or more application programs 312. Clientdevice 106 also includes a disk drive 314 and storage media 316.Although client device 106 is illustrated having both a RAM 306 and adisk drive 314, a particular device may include only one of the memorycomponents. Additionally, although not shown, a system bus typicallycouples together the various components within client device 106.

Processor(s) 304 process various instructions to control the operationof client device 106 and to communicate with other electronic andcomputing devices. The memory components (e.g., RAM 306, disk drive 314,storage media 316, and non-volatile memory 308) store variousinformation and/or data such as configuration information and graphicaluser interface information.

Client device 106 also includes a decoder 318, such as an MPEG-2 decoderthat decodes MPEG-2-encoded signals. A modem 320 allows client device106 to communicate with other devices via a conventional telephone line.An IR interface 322 allows client device 106 to receive input commandsand other information from a user-operated device, such as a remotecontrol device or an IR keyboard. Client device 106 also includes anetwork interface 324, a serial/parallel interface 326, an audio output328, and a video output 330. Interfaces 324 and 326 allow the clientdevice 106 to interact with other devices via various communicationlinks. Although not shown, client device 106 may also include othertypes of data communication interfaces to interact with other devices.Audio output 328 and video output 330 provide signals to a television orother device that processes and/or presents the audio and video data.Although client 106 is illustrated having multiple interfaces, aparticular client may only include one or two such interfaces.

Client device 106 also includes a user interface (not shown) that allowsa user to interact with the client device. The user interface mayinclude indicators and/or a series of buttons, switches, or otherselectable controls that are manipulated by a user of the client device.

General reference is made herein to one or more client devices, such asclient device 106. As used herein, “client device” means any electronicdevice having data communications, data storage capabilities, and/orfunctions to process signals, such as broadcast signals, received fromany of a number of different sources.

FIG. 4 is a block diagram of a portion of an exemplary client devicethat includes two tuners, a tuner controller, a disk drive, and a pairof decoders. The exemplary client device contains additional components(such as those shown in FIG. 3) which are omitted from FIG. 4 tosimplify discussion of specific components. A pair of tuners 402 and 404each receive broadcast signals from a one or more broadcast sources.Certain broadcast signals may include encoded data, such as encodedvideo data and encoded audio data. In this situation, a decoder is usedto decode the encoded data.

In a particular embodiment, the broadcast signals include data encodedusing the MPEG-2 (Moving Pictures Experts Group) encoding format. MPEG-2is a standard for digital video and digital audio compression. MPEG-2supports a variety of audio/video formats, including legacy TV, HDTV(High-Definition Television), and five channel surround sound. However,the methods and systems described herein can be used with any type ofsignal using any type of encoding format as well as signals that do notuse any encoding.

Referring again to FIG. 4, each tuner 402 and 404 maintains an internal“state”. This state information may include, for example, the channelcurrently being tuned (if any) and whether the tuner is creating a pausebuffer (e.g., for “pausing” a live broadcast) or creating an archivalrecording of the program. Each tuner 402 and 404 is coupled to a tunercontroller 406. Tuner controller 406 receives user control inputs, suchas a user request to change channels or record a program being broadcaston a particular channel. These user control inputs may be providedthrough a remote control device, wireless keyboard, or other inputdevice. Tuner controller 406 processes the received user control inputsand sends control instructions, if necessary, to tuner 402 and/or tuner404. For example, if the user requests to change from viewing channel204 to channel 206, the tuner controller 406 instructs one of the tuners402 or 404 to begin tuning channel 206. Additionally, tuners 402 and 404can communicate information to tuner controller 406, such as the currentchannel being tuned by the tuner. Although two tuners are illustrated inFIG. 4, a particular implementation may contain any number of tuners.

A disk drive 408 is coupled to tuners 402 and 404, tuner controller 406,and a pair of decoders 410 and 412. Disk drive 408 is capable of storingprogram data received from tuner 402 and/or 404 and replaying thatprogram data at a later time. Tuner controller 406 controls therecording of programs by sending appropriate commands to disk drive 408.Disk drive 408 may also store other information used by the clientdevice such as configuration information. Disk drive 408 outputs encodedprogram content to decoder 410 and/or 412. The decoder 410, 412 thendecodes the encoded program content and outputs decoded signals, such asdecoded video signals and decoded audio signals. Tuners 402 and 404 arealso coupled to decoders 410 and 412 and may provide tuned signalsdirectly to decoder 410, 412 if the tuned signal is being watched live(i.e., not being played back from the disk drive 408). Although FIG. 4illustrates two decoders 410 and 412, alternate embodiments include asingle decoder that decodes signals from both tuners 402 and 404, orfrom disk drive 408.

Alternatively, disk drive 408 may output signals directly (i.e., notthrough decoder 410, 412) if the program content stored on the diskdrive does not require decoding. Similarly, tuners 402, 404 may outputsignals directly if the program content being tuned does not requiredecoding.

FIG. 5 is a flow diagram illustrating an embodiment of a procedure 500for determining which tuner to use when a user selects a new channel toview. Initially, a user selects a channel to view (block 502). A firsttuner is assigned to tune the channel selected by the user (block 504).The user then selects a new channel to view (block 506). The procedure500 then determines whether the program being tuned by the first tuneris being recorded (block 508). This determination can be performed byquerying the state of the first tuner to determine whether the programis being recorded. If the program being tuned by the first tuner is notbeing recorded, the procedure assigns the first tuner to tune the newchannel (block 510). If the program being tuned by the first tuner isbeing recorded, the procedure assigns a second tuner to tune the newchannel (block 512). The manner in which a tuner is selected for the newchannel minimizes disruption to the user of the client device. Forexample, if the client device is already recording a program on onechannel, that recording is not disturbed by the user's request to view adifferent channel. Instead of changing the channel assigned to the tunerthat is tuning the recorded channel, a second tuner is used to tune thenew channel.

FIG. 6 is a flow diagram illustrating an embodiment of a procedure 600for determining which tuner to use when one tuner is recording a programand a change channel command is received. Initially, a user selects achannel to record (block 602). A first tuner is assigned to tune theselected channel (block 604). The user then selects a new channel toview (block 606). The procedure 600 then determines whether the newchannel is already being tuned by another tuner (block 606). If the newchannel is already being tuned by another tuner, then block 610 of theprocedure switches to the tuner assigned to the new channel (i.e., thenew “active” tuner is the tuner that was already tuning the newlyselected channel). The procedure then awaits the next user input (block618). If the “new channel” was being recorded, the user is provided witha graphical indication on the television screen and/or an audible soundindicating that the program is being recorded.

By checking to see if the requested channel is already being tuned byanother tuner, the system maintains the highest number of availabletuners and avoids the situation where one tuner is recording a programfrom a particular channel and another tuner is being used to tune anddisplay the program from the same channel. Also, by switching back to atuner that is tuning and recording the requested channel, the user hasaccess to the previously recorded program content. Certain systems emptythe “pause buffer” (i.e., recorded portions of the program) in responseto a channel change. If a new tuner was used to tune and display theselected channel, the previously recorded portions of the program wouldnot be available to the user. However, by switching control to the tuneralready recording the content, the user has access to the recordedcontent.

When switching back to a channel that is being recorded, the system canbegin displaying the program content currently being tuned by the tuner.Alternatively, the system can begin displaying previously recordedprogram content, such as playing back the recorded program starting atthe beginning of the program or playing back the recorded program fromthe point at which the user previously changed channels (i.e., switchedaway from the recorded program).

Referring again to FIG. 6, if the new channel selected at block 606 isnot already being tuned by another tuner, the procedure 600 determineswhether a second tuner is “available” for tuning the new channel (block612). An “available” tuner as used herein may be defined in severaldifferent ways. An “available” tuner may be idle or may be engaged in atask that has a lower priority than the priority of allowing a user tochange a channel being viewed. For example, using the tuner to receivenon-urgent data may be a lower priority than changing a viewed channel,but using the tuner to record a second program may be a higher prioritythan changing a viewed channel. One tuner can determine whether anothertuner is available by querying the other tuner to determine its statusand priority.

If a second tuner is not available for tuning the new channel, then theprocedure changes the first tuner to the new channel (block 614). Theprocedure then awaits the next user input (block 618). If a second tuneris available for tuning the new channel, then the procedure assigns thesecond tuner to the new channel (block 616). The procedure then awaitsthe next user input (block 618).

In a particular embodiment, recorded program content is associated withthe tuner that originally tuned the recorded program. When a first tuneris tuning program content that is being recorded and a problem occurswith the first tuner or a higher priority task is assigned to the firsttuner, a new tuner is selected to tune the program. In this situation,the recorded program content may be changed such that the recordedprogram content is associated with the new tuner. Thus, the user isstill able to view the previously recorded program content (tuned by thefirst tuner) even though the first tuner is no longer available. Forexample, if the first tuner malfunctions or the signal line providingbroadcast signals to the first tuner is damaged, the tuning operation isswitched to a second tuner and the previously recorded program contentis modified to be associated with the new tuner. Alternatively, theprogram content tuned by the second tuner may be stored as a separatefile that is “linked” to the previously recorded program content. Bylinking the two files, the user is able to easily access the entirerecorded program content even though the program content is saved in twodifferent files.

In one embodiment, one or more user interface features are provided thatindicate to the user that, upon switching back to a channel that isbeing recorded, the user is now watching a recorded show. Thisindication reassures the user that their recording is proceedingproperly. This indication also reminds the user that they have theability to access previously recorded portions of the program, ifdesired.

Portions of the systems and methods described herein may be implementedin hardware or a combination of hardware, software, and/or firmware. Forexample, one or more application specific integrated circuits (ASICs) orprogrammable logic devices (PLDs) could be designed or programmed toimplement one or more portions of the systems and procedures describedherein.

Although the invention has been described in language specific tostructural features and/or methodological steps, it is to be understoodthat the invention defined in the appended claims is not necessarilylimited to the specific features or steps described. Rather, thespecific features and steps are disclosed as preferred forms ofimplementing the claimed invention.

1. A method performed by a set top box comprising: receiving a request to tune to a first channel; identifying a first tuner based on a first query; assigning the first tuner to tune the first channel; receiving a request to tune to a second channel; identifying a second tuner based on a second query; and assigning the second tuner to tune the second channel.
 2. The method as recited in claim 1, wherein the second tuner is identified, at least in part, based on a priority hierarchy among requests.
 3. The method as recited in claim 1, further comprising identifying a third tuner based on a third query after the first tuner and the second tuner have been assigned.
 4. The method as recited in claim 1, further comprising assigning a third tuner to tune the first channel if the first tuner is unable to tune the first channel.
 5. The method as recited in claim 4, further comprising assigning a third tuner to tune the second channel if the second tuner is unable to tune the second channel.
 6. One or more computer-readable media having stored thereon a computer program that, when executed by one or more processors, causes the one or more processors to perform operations comprising: receiving a request to tune a first channel; assigning a first tuner to tune the first channel; receiving a request to tune a second channel; executing a query to determine tuner availability; assigning the first tuner to tune the second channel if the first channel is not currently being recorded; and assigning the second tuner to tune the second channel if the first channel is currently being recorded.
 7. The one or more computer readable media as recited in claim 6, the operations further comprising maintaining a status of the first tuner such that if the first tuner is tuned to a channel that is currently being recorded, the status of the first tuner indicates that the first tuner is unavailable.
 8. The one or more computer-readable media as recited in claim 6, wherein the operations further comprise changing a status of the second tuner to an available state.
 9. The one or more computer-readable media as recited in claim 6, the operations further comprising assigning the second tuner to tune the first channel if the first tuner is not available to tune the first channel.
 10. The one or more computer-readable media as recited in claim 6, the operations further comprising modifying a set of recorded program data associated with the first tuner to be associated with the second tuner if the first tuner is not available to tune the first channel.
 11. The one or more computer-readable media as recited in claim 6, the operations further comprising generating a new set of recorded program data and associating the new set of recorded program data with the second tuner.
 12. An apparatus comprising: a first tuner configured to tune any of a plurality of channels; a second tuner configured to tune any of the plurality of channels; and a tuner controller coupled to the first tuner and the second tuner, the tuner controller configured to identify the first tuner and the second tuner based on a query and assign one of the plurality of channels to each of the first tuner and second tuner based at least in part on a priority hierarchy of the query.
 13. The apparatus as recited in claim 12, wherein the tuner controller is further configured to prevent the second tuner from tuning the same channel as the first tuner.
 14. The apparatus as recited in claim 12, further comprising a disk drive coupled to the first tuner and the second tuner, the disk drive configured to store program data tuned by the first tuner or the second tuner.
 15. The apparatus as recited in claim 14, further comprising a first decoder coupled to the first tuner and the disk drive, the first decoder configured to decode encoded program content tuned by the first tuner.
 16. The apparatus as recited in claim 15, further comprising a second decoder coupled to the second tuner and the disk drive, the second decoder configured to decode encoded program content tuned by the second tuner.
 17. An apparatus as recited in claim 16, further comprising a decoder coupled to the first tuner, the second tuner, and the disk drive, the decoder configured to decode encoded program content tuned by the first tuner or the second tuner.
 18. An apparatus as recited in claim 12, wherein the tuner controller is further configured to change the first tuner to a new channel in response to a request to change channels if the second tuner is not available for tuning.
 19. An apparatus as recited in claim 12, wherein the tuner controller is further configured to assign the second tuner to tune a new channel in response to a request to change channels if the second tuner is available for tuning.
 20. An apparatus as recited in claim 12, wherein the tuner controller is further configured to assign the second tuner to tune a new channel in response to a request to change channels if the program tuned by the first tuner is being recorded. 